home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 011-020 / amok19 / area / area.def next >
Text File  |  1993-11-04  |  3KB  |  66 lines

  1. (*---------------------------------------------------------------------------
  2.     :Program.     Area.def
  3.     :Contents.      Simple und korrekte Benutzung von Graphics.Area..
  4.     :Author.      Bernd Preusing
  5.     :Address.      Gerhardstr. 16  D-2200 Elmshorn
  6.     :Phone.      04121/22486
  7.     :Copyright.      Public Domain
  8.     :Language.      Modula-2
  9.     :Translator.  M2Amiga V3.2e
  10.     :History.      V1.0 Preusing 27-Apr-89
  11.     :Bugs.      falls RastPort nicht initialisiert: Guru oder schlimmer
  12.     :Remark.      Graphics.AreaMove etc. liefern ein Resultat zurück,
  13.     :Remark.      dies wird hier mittels Arts.Assert unterdrückt.
  14.     :Remark.      Gemischter Betrieb von Polygonen und Ellipsen führt
  15.     :Remark.      unter graphics.library zu Fehlern und Abstürzen,
  16.     :Remark.      dies Modul verhindert das.
  17. ---------------------------------------------------------------------------*)
  18. (* $N-  (Parameter-Namen nicht in sym-File) *)
  19. DEFINITION MODULE Area;
  20.  
  21. FROM SYSTEM    IMPORT    ADDRESS;
  22. FROM Graphics    IMPORT    RastPortPtr;
  23.  
  24. TYPE
  25.   (* SpeicherProzedur für InitArea, z.B. Heap.AllocMem;
  26.      sie muß auch unbedingt den Speicher löschen!!: *)
  27.   AllocProc = PROCEDURE (VAR ADDRESS, LONGINT, BOOLEAN);
  28.  
  29. PROCEDURE InitArea(Rp: RastPortPtr; MaxVectors: INTEGER; Alloc: AllocProc);
  30. (*    :Input.   Rp: zu initialisierender RastPort
  31.     :Input.   MaxVectors: maximale Punktzahl vor AreaEnd. Falls
  32.     :Input.              mehr benötigt werden: Assert.
  33.     :Input.              Eine Ellipse benötigt nur 2 Punkte, 20
  34.     :Input.              bis 50 reicht also allemal!
  35.     :Input.   Alloc: Prozedur zur Speicheranforderung (z.B. Heap.AllocMem)
  36.     :Semantic. Der RastPort wird für Area-Operationen initialisiert,
  37.     :Semantic. alle nötigen Puffer werden alloziert. Die Verantwortung
  38.     :Semantic. für die Speicherfreigabe muß eine TermProcedure tragen!
  39. *)
  40.  
  41. PROCEDURE AreaMove(Rp: RastPortPtr; x,y: INTEGER);
  42. (*    :Semantic. Bewegt den Area-Zeiger nach x,y und
  43.     :Semantic. schließt ein evtl. vorher begonnenes Polygon.
  44. *)
  45.  
  46. PROCEDURE AreaDraw(Rp: RastPortPtr; x,y: INTEGER);
  47. (*    :Semantic. Zeichnet eine Area-Linie nach x,y.
  48. *)
  49.  
  50. PROCEDURE AreaEllipse(Rp: RastPortPtr; mx,my,rx,ry: INTEGER);
  51. (*    :Semantic. Zeichnet eine Ellipse mit Mittelpunkt mx,my und den
  52.     :Semantic. Radien rx und ry.
  53. *)
  54.  
  55. PROCEDURE AreaCircle(Rp: RastPortPtr; mx,my, r: INTEGER);
  56. (*    :Semantic. Zeichnet einen Kreis mit dem Mittelpunkt mx,my
  57.     :Semantic. und dem Radius r.
  58. *)
  59.  
  60. PROCEDURE AreaEnd(Rp: RastPortPtr);
  61. (*    :Semantic. schließt ein evtl. vorher begonnenes Polygon und startet
  62.     :Semantic. die eigentliche Fülloperation.
  63. *)
  64.  
  65. END Area.def
  66.